#修改元组元素
# tuple1 = (12,34,56)
# tuple2 = ('abc','mn')
# #修改元组元素操作是非法的
# #tuple1[0] =100
# #tuple1[0] =200
# tuple3= tuple1+tuple2
# print(tuple3)
#删除元组用del
#del t1
#任务1
# n = input('请输入姓名：')
# t = input('请输入13位手机号：')
# e = input('请输入邮箱：')
# a = input('请输入地址：')
# tuple4 =("姓名：",n,"电话：",t,"邮箱：",e,"地址:",a)
# print(tuple4)



#列表list
#1使用[]直接创建：
# list1=[1,2,3]
# print(list1)
# print(type(list1))
# #空列表
# list2 =[]
# print(list2)
#
# #1转化字符串
# l3 = list('hello')
# print(l3)
#
# #2转化元组
# t1 = tuple('hello')
# l4 = list(t1)
# print(l4)
#
# #3转化range函数
# r1 = range(5)#0,1,2,3,4
# print(r1)
# l5 = list(r1)
# print(l5)


#访问列表中的元素
l1 = [1,2,3,8,'p','u']
#使用正数索引进行访问，访问p
print(l1[4])
#使用负数索引进行访问，访问p
print(l1[-2])


#使用切片形式访问列表中的元素
l2 = ['p','u','w','r',1,5,7]
#正向取值
#使用正切片取出索引2,3,4的元素
print(l2[2:5])
#使用正切片取出前三个元素
print(l2[:3])
#使用正切片取出后三个元素
print(l2[4:])
#使用正切片取出索引1---5的元素，步长2
print(l2[1:6:2])
#负向取值
##使用负切片取出索引u，w,r,的元素
print(l2[-6:-3])
#步长为负数取值从右到左,常用于排序上，倒序形式
print(l2[::-1])
l3 = [10,8,6,5,2,1]
print(l3[::-1])

#遍历列表
#使用for循环遍历列表
l3 = [1,2,3,4,5,6]
for i in l3:
    print(i)

#修改列表元素
#修改单个元素
l4 = [10,56,34,2,56,44,7]
#将索引为2的元素值改为100
l4[2]= 100
print(14)

#修改多个元素
l5 = [10,56,34,2,56,44,7]
##修改第1~4个元素的值
l5[1:4] = [45,-56,98]
print(l5)


#列表中加元素
#1.append()用于在列表尾加元素
l6 = ['a','b','c']
l6.append('f')
#列表加列表
l6.append(['e','f'])
print(l6)



#extend()在列表尾一次加多个元素
l7 = ['1','2','3']
l7.extend('d')
print(l7)

#列表加列表

l7.extend(['4','5','6','7'])
print(l7)
l7.extend('world')
print(l7)

#insert()特定位置加元素
l8 = ['a','s','d']
l8.insert(2,6)
print(l8)



##删除元素
l15 = ['a','b','c','d']
l15.remove('a')
print(l15)
#如果元素不在列表中会报错
#l15.remove('f')


#pop（）方法删除列表中指定索引处元素
l16 = [10,56,34,2,56,44,7]
#删除索引为3的元素
l16.pop(3)
print(l16)
#删除最后一个元素
l16.pop()
print(l16)


#del 可以用来删除列表中单个元素或者一段连续的元素
l17 = ['a','b','c','d','e']
#删除索引为1的元素
del l17[1]
print(l17)
l18 = [10,56,34,2,58,44,7]
#删除索引为1-3元素
del l18[1:4]
print(l18)

#若将列表中所有元素删除可用clear
l19 =['a','b','c','d','e']
#清空
l19.clear()
print(l19)



#任务
#创建两个空列表name-list和phone-list，用于存储联系人姓名和电话：
#向列表中添加联系人
#输入联系人编号修改信息
#输入联系人编号删除信息
##使用clear（）清空通讯录
name_list =[]
phone_list = []
while 1 :
    print("菜单：1.添加联系人 2.修改联系人 3.删除联系人")
    chioce = input("请输入选择")
    #1.添加联系人，包括手机号，姓名
    if chioce=="1":
        name_list.append(input("请输入联系人姓名"))
        phone_list.append(input("请输入联系人手机号："))
        print(name_list)
        print(phone_list)
    #修改联系人信息
    elif chioce == "2":
        num = int(input("请输入"))
        if len(name_list) > 0 and num <= len(name_list):
            name_list[num - 1] = input("修改联系人姓名")
            phone_list[num - 1] = input("修改联系电话")
        else:
            print("联系人编号输入有误")
    #3.删除联系人信息
    elif chioce == "3":
        num = int(input("输入联系人编号："))
        if len(name_list) > 0 and num <= len(name_list):
            name_list.pop(num-1)
            phone_list.pop(num - 1)
        else:
            print("显示联系人信息")
            print(name_list)
            print(phone_list)



#查找元素 index（）；列表名.index【要查找的元素，索引起始位置，结束位置】
ls1 = [1,3,5,7,'a','b',3,'b',3]
print(ls1.index(3))
print(ls1.index('b',6))
print(ls1.index('b',6,9))
#print(ls1.index(10))   10没在ls1中查找错误


#count()方法用来统计某元素在列表中出现的次数列表名.count
ls2 = [1,3,5,7,'a','b',3,'b',3]
print(ls2.count(3))
print(ls2.count('b'))
print(ls2.count(0))


#元素排序 sort() 函数用于对原列表进行排序
#语法格式为：ls.sort(key=none,reverse=false)
#1,元素是字符串排序
ls3 = ['1','3','44','23','99','88','56','233']
#默认升序
ls3.sort()
print(ls3)
#降序reverse=True
ls3.sort(reverse=True)
print(ls3)

#2,元素是数字排序
ls4 =[1,22,23,14,2,432]
#默认升序
ls4.sort()
print(ls4)
#降序reverse=True
ls4.sort(reverse=True)
print(ls4)


#字典的创建
#1，使用{}创建字典
#语法格式：字典名 = {‘key1’：’value1‘，key2’：’value2‘，....keyn’：’valuen‘}
#使用字符串作为key
d1 = {'语文':90, '英语':85}
print(type(d1))
#使用元祖和数字做key
d2 ={(23,89):"great",30:[1,3,4]}
print(type(d2))
#创建空元组
d3 ={}
print(d3)

#2使用dict（）方法用过关键字来创建
#字典名=dict（key1=value1，key2=value2，）
d4 =dict(数学=98,语文=87)
print(d4)



##字典元素的访问
#1、字典名【key】
d5 = {'数学':95,'英语':92,'语文':84}
#键存在，返回的是值value
print(d5['英语'])
#键不存在，会引起一个keyerror错误
#print(d5['python'])
#
#2、get（）方法来获取指定键对应的值，语法格式：字典名.get(key[,default])
d6 = {'数学':95,'英语':92,'语文':84}
#键存在
print(d6.get('语文'))
#键存在，不写default，会返回None
print(d6.get('python'))
print(d6.get('python','该键不存在'))

##字典添加键值对
d7 = {'数学':95,'英语':92,'语文':84,'python':99}
d7['可视化']=99
print(d7)

##字典修改键值对
d8 = {'数学':95,'英语':92,'语文':84,'python':99}
d8['英语']= 100
print(d8)

####字典删除键值对
d9 = {'数学':95,'英语':92,'语文':84,'python':99}
#1、使用del关键字
del d9['语文']
print(d9)
#2、使用pop（）方法
d9.pop('英语')
print(d9)